#ifndef ENGINE_APPLICATION_STATE_H
#define ENGINE_APPLICATION_STATE_H

/// \file 
/// \author Martin Dubcovsky
/// \date March 22, 2008
/// \brief This file declares \c enum GameTrait and \c struct GameState

#include <bitset>

namespace engine{

/// A list of traits accounted for in an engine::ApplicationState
/// \todo Add more traits
enum ApplicationTrait {
    APP_CLOSED = 0,
    APP_INITIALIZING,
    APP_INITIALIZED,
    APP_HIDDEN,
    APP_MINIMIZED,
    APP_MAXIMIZED,
    APP_HAS_FOCUS,
    APP_FULLSCREEN,
    APP_TRAIT_COUNT ///< This value is last in order to automatically count the number of ApplicationTraits
};

/// A GameState is currently nothing more than an std::bitset
/// templated to have APP_TRAIT_COUNT traits
typedef std::bitset<APP_TRAIT_COUNT> ApplicationState;

}
#endif //ENGINE_APPLICATION_STATE_H